import java.util.ArrayList;

/**
 * 输入一颗二叉树的根节点root和一个整数expectNumber，找出二叉树中结点值的和为expectNumber的所有路径。
 * 1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点
 * 2.叶子节点是指没有子节点的节点
 * 3.路径只能从父节点到子节点，不能从子节点到父节点
 * 4.总节点数目为n
 *
 * Date: 2022-10-04
 * Time: 10:45
 */
public class Test {
    /*
    private ArrayList<ArrayList<Integer>> result = new  ArrayList<ArrayList<Integer>>();

    private void FindPathDFS(TreeNode root,int expectNumber, ArrayList<Integer> list) {
        if(root == null) {return ;}

        list.add(root.val);
        expectNumber -= root.val;

        if(root.left == null && root.right == null && expectNumber == 0) {
            result.add(new ArrayList<Integer>(list)); //注意深浅拷贝
        }
        FindPathDFS(root.left,expectNumber,list);
        FindPathDFS(root.right,expectNumber,list);

        list.remove(list.size()-1); // 回退.
    }

    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int expectNumber) {

        if(root == null) { return result; }

        ArrayList<Integer> list = new ArrayList<>();

        FindPathDFS(root,expectNumber,list);

        return result;
    }

     */
}
